#ifndef __MAIN_H__

#include <sys/wait.h>
#include <sys/stat.h>
#include <errno.h>
#include <modbus.h>
#include <stdbool.h>
#include "msg_queue_peer.h"
#include "list.h"
#include "shmem.h"
#include "cJSON.h"
#include "pthread.h"
#include "moddata.h"

void *thread_getmsg(void *arg);
void *thread_sendmsg(void *arg);
union val_t {
    int b_val;
    int i_val;
    float f_val;
};
struct std_node
{
    int key;             //唯一键值
    int type;            //数据点类型
    int dev_type;        //数据点属于哪个设备，根据网关支持的设备自行定义
    union val_t old_val; //变化上报后需要更新旧值
    union val_t new_val;  //从共享内存取出最新数据，放到newval中
    int ret;             //默认为-1，采集成功后设置为0，采集失败再置-1
};
 struct mb_node
{
    int key;        //唯一键值
    char name[128]; //数据点名称
    int type;       //数据点类型
    int addr;       //在数据结构中的
};
struct mb_node_list
{
    struct mb_node node;
    struct list_head list;
};

struct mb_node_list head;

typedef struct data
{
    bool fan;
    bool door;
    bool infrared;
    bool beep;
    float co2;
    float h2o;
} data_t;

#endif